﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// 주문 타입 : 매수, 매도
public enum GTOrderType { NONE = 0, BUY, SELL };
// 주문 상태 : 주문 확인, 주문 접수, 주문 체결, 주문 거부, 주문 취소, 주문 수정, 알수없음 
public enum GTOrderState { NONE = 0, CONFIRMED, APPLIED, CONCLUDED, DENIED, CANCELED, MODIFIED, UNKNOWN }
// 주문 모드 : 지정가, 시장가, 조건부지정가, 최유리지정가
public enum GTOrderMode { AT_PRICE = 0, AT_MARKET, AT_CONDPRICE, AT_BESTPRICE };


namespace GoodTrader.GTOrder
{
    public class COrder
    {
        // 계좌 객체 
        private CAccount m_Account = null;
        public GoodTrader.GTOrder.CAccount Account
        {
            get { return m_Account; }
            set { m_Account = value; }
        }
        // 주문번호
        private string m_Number = "";
        public string Number
        {
            get { return m_Number; }
            set { m_Number = value; }
        }
        // 주문이름
        private string m_Name = "";
        public string Name
        {
            get { return m_Name; }
            set { m_Name = value; }
        }

        // 주문이 일어난 그날의 봉 인덱스
        private int m_DayIndex = 0;
        public int DayIndex
        {
            get { return m_DayIndex; }
            set { m_DayIndex = value; }
        }
        // 주문요청시간
        private double m_RequestedTime = 0.0;
        public double RequestedTime
        {
            get { return m_RequestedTime; }
            set { m_RequestedTime = value; }
        }
        // 주문요청 확인 시간
        private double m_ConfirmedTime = 0.0;
        public double ConfirmedTime
        {
            get { return m_ConfirmedTime; }
            set { m_ConfirmedTime = value; }
        }
        // 주문요청 체결 시간
        private double m_ConcludedTime = 0.0;
        public double ConcludedTime
        {
            get { return m_ConcludedTime; }
            set { m_ConcludedTime = value; }
        }
        // 주문요청 수량
        private int m_RequestedAmount = 0;
        public int RequestedAmount
        {
            get { return m_RequestedAmount; }
            set { m_RequestedAmount = value; }
        }
        // 주문체결 수량
        private int m_ConcludedAmount = 0;
        public int ConcludedAmount
        {
            get { return m_ConcludedAmount; }
            set { m_ConcludedAmount = value; }
        }
        // 주문요청 가격
        private double m_RequestedPrice = 0.0;
        public double RequestedPrice
        {
            get { return m_RequestedPrice; }
            set { m_RequestedPrice = value; }
        }
        // 주문체결 가격
        private double m_ConcludedPrice = 0.0;
        public double ConcludedPrice
        {
            get { return m_ConcludedPrice; }
            set { m_ConcludedPrice = value; }
        }
        // 주문 종목 코드
        private string m_Code = "";
        public string Code
        {
            get { return m_Code; }
            set { m_Code = value; }
        }
        // 주문타입 
        private GTOrderType m_OrderType = GTOrderType.NONE;
        public GTOrderType OrderType
        {
            get { return m_OrderType; }
            set { m_OrderType = value; }
        }
        
        // 주문상태
        private GTOrderState m_State = GTOrderState.NONE;
        public GTOrderState State
        {
            get { return m_State; }
            set { m_State = value; }
        }
        // 주문모드
        private GTOrderMode m_OrderMode = GTOrderMode.AT_MARKET;
        public GTOrderMode OrderMode
        {
            get { return m_OrderMode; }
            set { m_OrderMode = value; }
        }
        

        // 주문 조건
        private string m_OrderCond = "0";
        public string OrderCond
        {
            get { return m_OrderCond; }
            set { m_OrderCond = value; }
        }

        // 계좌번호
        private string m_AccountNumber = "";
        public string AccountNumber
        {
            get { return m_AccountNumber; }
            set { m_AccountNumber = value; }
        }

        // 원주문 번호
        private string m_OriginalOrderNumber = "";
        public string OriginalOrderNumber
        {
            get { return m_OriginalOrderNumber; }
            set { m_OriginalOrderNumber = value; }
        }
    }
}
